Yii の試運転
====================

このセクションでは、出発点となるスケルトンアプリケーションを作る方法を解説します。
説明を簡単にするために、ウェブサーバのドキュメントルートを `/wwwroot` であると仮定し、対応する URL を `http://www.example.com/` であるとします。 


Yii のインストール
--------------

まずはじめに Yii Framework をインストールします。
Yii のリリースファイル(バージョン 1.1.1以上)を [www.yiiframework.com](http://www.yiiframework.com/download) から取得し、`/wwwroot/yii` ディレクトリに解凍します。
念のために、`/wwwroot/yii/framework` というディレクトリが存在することをもう一度確認してください。

> Tip|ヒント: Yii framework はファイルシステムのどの場所にでもインストールすることが出来ます。ウェブフォルダ(ドキュメントルート)の下である必要はありません。Yii の `framework` ディレクトリはすべてのフレームワークコードを含んでおり、このディレクトリが Yii アプリケーションの配布に必要な唯一のフレームワークディレクトリです。インストールした単一の Yii を複数の Yii アプリケーションから利用することが可能です。

Yii をインストールした後、ブラウザのウィンドウを開いて、`http://www.example.com/yii/requirements/index.php` という URL にアクセスしてください。
そうすると、Yii のリリースに含まれる必要条件チェッカが表示されます。
ブログアプリケーションのためには、Yii が必要とする最小限の要求に加えて、SQLite データベースにアクセスするために、`pdo` と `pdo_sqlite` という二つの PHP 拡張が有効である必要があります。


スケルトンアプリケーションを作る
-----------------------------

次に `yiic` ツールを使って `/wwwroot/blog` ディレクトリにスケルトンアプリケーションを作ります。
`yiic` ツールは Yii のリリースに含まれるコマンドラインツールです。
このツールを使ってコードを生成して、反復的コーディング作業をいくらか軽減することができます。

コマンドプロンプトを開き、以下のコマンドを実行します:

~~~
% /wwwroot/yii/framework/yiic webapp /wwwroot/blog
Create a Web application under '/wwwroot/blog'? [Yes|No]y
......
~~~

> Tip|ヒント: 上で示したように `yiic` ツールを使うには、CLI PHP プログラムにパスが通っていなければなりません。そうでない場合は、次のようにすることでコマンドを利用できます:
>
>~~~
> path/to/php /wwwroot/yii/framework/yiic.php webapp /wwwroot/blog
>~~~

作ったばかりのアプリケーションを試してみるには、ブラウザを開いて、`http://www.example.com/blog/index.php` にアクセスします。
スケルトンアプリケーションが完全に機能する4つのページを既にそなえているのが分る筈です。
すなわち、ホーム、アバウト(について)、コンタクト、ログイン という4つのページです。

以下では、このスケルトンアプリケーションの中身について簡単に説明します。

###エントリスクリプト

まず、`/wwwroot/blog/index.php` という [エントリスクリプト](http://www.yiiframework.com/doc/guide/ja/basics.entry) のファイルがあります。これは以下のような内容です:

~~~
[php]
<?php
$yii='/wwwroot/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';

// 実運用モードでは次の行を削除します
defined('YII_DEBUG') or define('YII_DEBUG',true);

require_once($yii);
Yii::createWebApplication($config)->run();
~~~

これは、ウェブユーザが直接にアクセスできる唯一のスクリプトです。
エントリスクリプトは最初に Yii ブートストラップファイル `yii.php` を読み込みます。次に、指定した設定で [アプリケーション](http://www.yiiframework.com/doc/guide/ja/basics.application) インスタンスを作成して、アプリケーションを実行します。 


###ベースアプリケーションディレクトリ

次に、`/wwwroot/blog/protected` という [アプリケーションベースディレクトリ](http://www.yiiframework.com/doc/guide/ja/basics.application#sec-3) があります。
これから作成するコードとデータのほとんどがこのディレクトリ以下に配置されます。
このディレクトリはウェブユーザのアクセスから保護されなければなりません。
[Apache httpd ウェブサーバ](http://httpd.apache.org/) を使っているなら、以下のような `.htaccess` ファイルをこのディレクトリに置きます:

~~~
deny from all
~~~

他のウェブサーバを使っている場合は、ウェブユーザのアクセスからディレクトリを保護する方法について、対応するマニュアルを参照してください。 


アプリケーションのワークフロー
--------------------

Yii がどのように動くかを理解しやすいように、ユーザがコンタクトページにアクセスした際のスケルトンアプリケーションの主なワークフローを解説します:

 0. ユーザが URL `http://www.example.com/blog/index.php?r=site/contact` をリクエストします。
 1. リクエストを処理するために、[エントリスクリプト](http://www.yiiframework.com/doc/guide/ja/basics.entry) がウェブサーバにより実行されます。
 2. [アプリケーション](http://www.yiiframework.com/doc/guide/ja/basics.application) インスタンスが作成され、アプリケーション初期構成ファイル `/wwwroot/blog/protected/config/main.php` で指定された初期プロパティ値が設定されます。
 3. アプリケーションは [コントローラ](http://www.yiiframework.com/doc/guide/ja/basics.controller) と [コントローラアクション](http://www.yiiframework.com/doc/guide/ja/basics.controller#sec-4) にリクエストを解決します。コンタクトページへのリクエストは、`site` コントローラと `contact` アクションに解決されます (`/wwwroot/blog/protected/controllers/SiteController.php` 中の `actionContact` メソッド)。
 4. アプリケーションは `site` コントローラを `SiteController` のインスタンスとして作成し、実行します。
 5. `SiteController` インスタンスは自身の `actionContact()` メソッドを呼ぶことで `contact` アクションを実行します。
 6. `actionContact` メソッドは `contact` という名前の [ビュー](http://www.yiiframework.com/doc/guide/ja/basics.view) をレンダリングし、ウェブユーザに提示します。内部的には、ビューファイル `/wwwroot/blog/protected/views/site/contact.php` を読み込み、[レイアウト](http://www.yiiframework.com/doc/guide/ja/basics.view#sec-2) ファイル `/wwwroot/blog/protected/views/layouts/column1.php` にその結果を埋め込むことで、レンダリングが達成されます。

<div class="revision">$Id$</div>
